package algo.A01_位运算;

import util.ArrayUtil;

import java.util.Random;

/**
 * 一个数组中除了某一个数落单，其他都是成对的，找出这个落单的数
 */
public class T02_找出落单的数 {
    public static void main(String[] args) {
        int LEN = 101;
        int[] array = new int[LEN];
        Random r = new Random();
        for (int i = 0; i < array.length; i++) {
            array[i++] = r.nextInt(200);
            if (i < array.length) {
                array[i] = array[i - 1];
            }
        }
        ArrayUtil.print(array);
        ArrayUtil.shuffle(array);
        //开始解题
        solution(array);
    }

    /**
     * 直接对所有的数异或，只要是成对的异或结果就为0，0与其他数异或为其他数自身的值
     * @param arr
     */
    private static void solution(int[] arr){
        int result = 0;
        for (int i = 0; i < arr.length; i++) {
            result = result ^ arr[i];
        }
        System.out.println("result = " + result);
    }
}
